package com.mjf.kxml.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mjf.kxml.util.CKHttpSendUtil;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * desc
 * </p>
 *
 * @author chenshoumeng
 * @date 2025/6/4 15:28
 */
@Data
@TableName("u8contract")
public class ContractInfo {
    @TableId(type = IdType.AUTO)
    private Long id; // 主键
    /** 公司名称，调用接口公司名称，公司全称 示例：中车长春轨道客车股份有限公司 */
    private String ccarGsname;
    /** 公司编码，调用接口公司编码 示例：100200012001 */
    private String ccarGscode;
    private String number; // 合同编号
    private String name; // 合同名称
    private String ccarCreateUser; // 创建人
    private String ccarCreateUserCode; // 创建人档案号
    private String ccarIsDeleted; // 逻辑删除标识 数据范围:1、0.0: 未删除,1: 删除
    private String ccarAcntmcode; // 本方单位编码
    private String ccarAcntmname; // 本方单位名称
    private String ccarOppositeCompany; // 对方单位名称
    private String ccarOppositeCompanycode; // 对方单位税号
    private String ccarContractType; // 合同类型 N01、N02、N03、N04、N05、N06、N
    private String ccarContractSubject; // 合同标的物名称
    private String ccarBillingType; // 结算类型 N01:收款;N02: 付款;N03:无收无支
    private String ccarSignDate; // 签订日期 格式为YYYY-MM-DD，不允许为9999-12
    private String ccarStartDate; // 起始日期格式为YYYY-MM-DD，不允许为9999-12
    private String ccarEndDate; // 合同终止日期“无限期”或“无固定期限”填9999-12-31是
    private String ccarFrameworkContract; // 否框架合同 T00: 非框架合同: T01:框架合同:
    private String ccarContractAmount; // 合同总金额(含税) 非框架合同填写，为合同总金额》
    private String ccarContractAmtwotax; // 合同总金额 (不含税) 框架合同填写，为合同总金额
    private String ccarSettlementAmount; // 已结算金额 非框架合同填写，为合同总金额对应币种
    private String ccarCurrenctcode; // 为交易所使用货币币种
    private String ccarSettlementTerms; // 结算条款，10至512字符
    private String ccarRetention; // 是否有质保金T00:无质保金,T01:有质保金,
    private String ccarRetentionRatio; // 质保金比例(%)有质保金必填示例:12.34
    private String ccarRetentionTerms; // 质保金条款，10至512字符
    private String ccarAmendment; // 是否变更合同 T00:非变更合同;T01: 是变更合同;
    private String ccarSupplement; // 是否补充协议 T00:非框架协议: T01: 是补充协议:
    private String ccarBaseContract; // 基础合同号 如是变更合同/是补充协议，则必填。
    private String guid; // U8合同档案主键
    private String ccarStandby1; // 备用字段1
    private String ccarStandby2; // 备用字段2
    private String ccarStandby3;
    private String ccarStandby4;
    private String ccarStandby5;
    private String ccarStandby6;
    private String ccarStandby7;
    private String ccarStandby8;
    private String ccarStandby9;
    private String ccarStandby10;
    // 数据获取时间
    private LocalDateTime times;
    // 推送标识 0-未推送 1-推送成功 2-推送失败
    private String pullsk;
    // 推送数据返回结果
    private String pullskoutstr;
    // 推送时间
    private LocalDateTime pulltime;

    /**
     * 构建对象XML
     * @param onlyTag  接口调用唯一标识 随机不重复即可
     * @param vendors  推送数据集合
     * @return
     */
    public static String buildObjectXml(String onlyTag, List<ContractInfo> vendors) {
        StringBuilder sb = new StringBuilder();
        sb.append("<Object>\n")
            .append("    <ccar_onlytag>").append(onlyTag).append("</ccar_onlytag>\n")
            .append("    <contract_lists>\n");

        for (ContractInfo vendor : vendors) {
            sb.append("        <contract>\n")
                .append("            <ccar_gsname>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarGsname())).append("</ccar_gsname>\n")
                .append("            <ccar_gscode>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarGscode())).append("</ccar_gscode>\n")
                .append("            <ccar_create_user>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarCreateUser())).append("</ccar_create_user>\n")
                .append("            <ccar_create_user_code>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarCreateUserCode())).append("</ccar_create_user_code>\n")
                .append("            <ccar_is_deleted>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarIsDeleted())).append("</ccar_is_deleted>\n")
                .append("            <number>").append(CKHttpSendUtil.jurEmpty(vendor.getNumber())).append("</number>\n")
                .append("            <name>").append(CKHttpSendUtil.jurEmpty(vendor.getName())).append("</name>\n")
                .append("            <ccar_acntmcode>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarAcntmcode())).append("</ccar_acntmcode>\n")
                .append("            <ccar_acntmname>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarAcntmname())).append("</ccar_acntmname>\n")
                .append("            <ccar_opposite_company>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarOppositeCompany())).append("</ccar_opposite_company>\n")
                .append("            <ccar_opposite_companycode>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarOppositeCompanycode())).append("</ccar_opposite_companycode>\n")
                .append("            <ccar_contract_type>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarContractType())).append("</ccar_contract_type>\n")
                .append("            <ccar_contract_subject>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarContractSubject())).append("</ccar_contract_subject>\n")
                .append("            <ccar_billing_type>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarBillingType())).append("</ccar_billing_type>\n")
                .append("            <ccar_sign_date>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarSignDate())).append("</ccar_sign_date>\n")
                .append("            <ccar_start_date>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStartDate())).append("</ccar_start_date>\n")
                .append("            <ccar_end_date>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarEndDate())).append("</ccar_end_date>\n")
                .append("            <ccar_framework_contract>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarFrameworkContract())).append("</ccar_framework_contract>\n")
                .append("            <ccar_contract_amount>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarContractAmount())).append("</ccar_contract_amount>\n")
                .append("            <ccar_contract_amtwotax>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarContractAmtwotax())).append("</ccar_contract_amtwotax>\n")
                .append("            <ccar_settlement_amount>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarSettlementAmount())).append("</ccar_settlement_amount>\n")
                .append("            <ccar_currenctcode>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarCurrenctcode())).append("</ccar_currenctcode>\n")
                .append("            <ccar_settlement_terms>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarSettlementTerms())).append("</ccar_settlement_terms>\n")
                .append("            <ccar_retention>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarRetention())).append("</ccar_retention>\n")
                .append("            <ccar_retention_ratio>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarRetentionRatio())).append("</ccar_retention_ratio>\n")
                .append("            <ccar_retention_terms>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarRetentionTerms())).append("</ccar_retention_terms>\n")
                .append("            <ccar_amendment>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarAmendment())).append("</ccar_amendment>\n")
                .append("            <ccar_supplement>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarSupplement())).append("</ccar_supplement>\n")
                .append("            <ccar_base_contract>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarBaseContract())).append("</ccar_base_contract>\n")
                .append("            <ccar_standby1>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby1())).append("</ccar_standby1>\n")
                .append("            <ccar_standby2>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby2())).append("</ccar_standby2>\n")
                .append("            <ccar_standby3>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby3())).append("</ccar_standby3>\n")
                .append("            <ccar_standby4>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby4())).append("</ccar_standby4>\n")
                .append("            <ccar_standby5>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby5())).append("</ccar_standby5>\n")
                .append("            <ccar_standby6>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby6())).append("</ccar_standby6>\n")
                .append("            <ccar_standby7>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby7())).append("</ccar_standby7>\n")
                .append("            <ccar_standby8>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby8())).append("</ccar_standby8>\n")
                .append("            <ccar_standby9>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby9())).append("</ccar_standby9>\n")
                .append("            <ccar_standby10>").append(CKHttpSendUtil.jurEmpty(vendor.getCcarStandby10())).append("</ccar_standby10>\n")
                .append("        </contract>\n");
        }

        sb.append("    </contract_lists>\n")
            .append("</Object>");
        return sb.toString();
    }

}
